Аккаунт на ssh-сервере можно легко использовать для создания SOCKS-прокси, причём для этого достаточно обычного непривилегированного аккаунта. Всё делается очень просто (подключаемся к серверу example.com под юзером user):
% ssh -D 127.0.0.1:13388 [email protected]
Запускается с виду обычная ssh-сессия, оставляем её в таком виде, а дальше указываем в клиенте (веб-браузере, например) адрес SOCKS-прокси 127.0.0.1
, порт 13388
и пользуемся.
По сути ssh-клиент организует туннель, по которому гоняется трафик. Особенным плюсом является то, что на стороне сервера не нужно вообще никакого специального софта.
Другой полезный рецепт — создание туннеля до конкретного сетевого сервиса, работающего на удалённом сервере или доступного только с удалённого сервера. Делается это так:
% ssh -L LOCAL_ADDR:2222:HOST_ADDR:80 [email protected]
LOCAL_ADDR можно опустить, тогда будут использованы все локальные сетевые интерфейсы:
% ssh -L 2222:HOST_ADDR:80 [email protected]
При этом происходит следующее: все соединения с локальной машины к адресу LOCAL_ADDR:2222 (для бо́льшей безопасности можно указывать LOCAL_ADDR равным 127.0.0.1
или localhost
) будут перенаправляться через SSH-соединение и уже с компьютера на другом конце отправляются на адрес HOST_ADDR:80. По такому принципу можно пробрасывать любое сетевое соединение; самый простой пример — до http-сервера, видного только в сети ssh-сервера, или до сервера базы данных.
Вот пример для пробрасывания подключения до сервера mysql, доступного в удалённой сети по адресу 192.168.3.12 и порту 3306:
% ssh -L 127.0.0.1:5900:192.168.3.12:3306 [email protected]
Естественно, все эти опции можно задавать через конфиг ssh-клиента, создавая нечто вроде «профилей подключения» для разных туннелей и сервисов. Об этом я напишу чуть позднее.
Другие статьи на эту же тему¶
- Меняем ssh-agent на gpg-agent
- Параноидальная настройка ssh-agent в Mac OS X Mavericks
- SOCKS-прокси через SSH
- Безопасный ssh-туннель
История изменений¶
- 2013-01-22: изначальная версия